تک پدیا: تکنیک Screen Space Reflection چیست و چه استفادهای در بازیها دارد؟
همه چیز با بازتاب زیباتر میشود...
بازتابها، جزئی از زیباییهای دنیای پیرامون ما به حساب میآیند. زمانی که در یک شب بارانی به نور چراغهای شهر و خودروها روی سطح خیس خیابان نگاه میکنیم، ناخودآگاه غرق در لذت شده و چشمهایمان نوازش میشود. یا زمانی که به بازتاب نور خورشید در شیشههای یک فروشگاه مینگریم، همه چیز زیباتر و خواستنیتر به نظر میرسد. حالا این بازتابهای زیبا و فوقالعاده، بدون شک برای خلق یک صحنه یا مرحله در یک بازی ویدیویی و افزایش حس باورپذیری در آن، لازم و ضرروی هستند. یکی از راههای به تصویر کشیدن این بازتابها در دنیای بازیهای ویدیویی، فناوری یا تکنیک Screen Space Reflection است. امروز در قسمتی جدید از سری مطالب «تک پدیا» در لیون تک با شما هستیم تا از صفر تا صد SSR صحبت کنیم و به سوالات شما درباره این مفهوم بصری و گرافیکی پاسخ دهیم. با ما همراه باشید.
بازتابها با راهها و روشهای مختلفی در بازیها قابل پیادهسازی و ارائه هستند. دقیقترین و بهترین راه برای به نمایش گذاشتن بازتاب یا همان رفلکشن در بازیها، استفاده از فناوری Ray Tracing است که در اولین قسمت از سری مطالب تک پدیا به صورت مفصل درباره آن صحبت کردیم اما استفاده از Ray Tracing حتی به صورت محدود، تقاضای سخت افزاری بالایی را طلب میکند و بدون شک همه نمیتوانند از تصویر دقیق و بینقصی که این فناوری ارائه میکند، بهره بگیرند. با این که Ray Tracing (مخصوصاً با کنسولهای ایکس باکس سری ایکس و پلی استیشن 5) در حال همهگیر شدن است و تا سالهای آینده به یک فناوری عمومی و قابل دسترس تبدیل خواهد شد، اما نمیتوان تکنیکها و فناوریهای جایگزین و قدیمیتر را به این دلیل از یاد برد.
روشهای مرسوم
اما راههای قدیمیتر، دردسترستر و کمتقاضاتر برای نمایش بازتابها چه هستند؟ عمومیترین تکنیکهای ارائه بازتاب در بازیها، کیوب مپ (CubeMap)، پلینر رفلکشن (Planar Reflections) و اسکرین اسپیس رفلکشن (Screen Space Reflections) محسوب میشوند. در ادامه درباره این روشها توضیحات کوتاهی ارائه خواهیم کرد.
CubeMap
با تکنیک کیوب مپ که سادهترین و کمتقاضاترین راه برای ارائه بازتابها به حساب میآید، تصاویر ثابت و از پیش تعیین شدهای روی سطوح قرار میگیرد که الزاماً به صورت دقیق، چیزی را که باید، بازتاب نمیدهند! به عنوان مثال، بازی Spider-Man (نسخه پلی استیشن 4) را در نظر بگیرید که بازتابها روی ساختمانهای پر تعداد و سر به آسمان کشیده شهر، تنها تصاویری تقریبی و از پیش تعیین شده هستند که به گیمر و بیننده، حس بازتاب محیط شهر روی شیشهها و پنجرهها را القا میکنند اما به هیچ عنوان به صورت همزمان و دقیق، شهر را بازتاب نمیدهند.
Plainer Reflections
با استفاده از تکنیک و فناوری Plainer Reflections، میتوان بازتابها را روی سطوح صاف با مساحت بالا به خوبی به نمایش درآورد. به عنوان مثال برای به تصویر کشیدن بازتابها روی یک زمین صاف سرامیکی یا سطح اقیانوس، Plainer Reflections میتواند یک گزینه ایدهآل باشد. با این حال، Plainer Reflections نه تنها عملکرد بازی را به طرز قابل توجهی تحت تأثیر قرار میدهد، بلکه محدودیتهای خاص خود را دارد. به عنوان مثال، این روش با متریالهای شیشهای (خالص)، آبشارها، افکت مه، Lens Flair و… کار نمیکند.
Screen Space Reflections چگونه کار میکند؟
ایده اصلی و اساسی برای تکنیک Screen Space Reflection بسیار ساده است. با این روش، تمام محیطی که به صورت عادی رندر میشود، قابل بازتاب است اما این بازتاب تنها در صورتی روی سطوح بازتابنده دیده میشود که داخل صفحه وجود داشته باشد. این بدان معنی است که مناطقی از محیط روی سطوح بازتاب داده میشود که داخل دید، دوربین یا قاب شما در بازی قرار گرفته باشند.
بدون شک تا به حال در بسیاری از بازیهایی که از فناوری یا تکنیک Screen Space Reflection بهره میبرند مشاهده کردهاید زمانی که به صورت مستقیم به یک سطح بازتابنده مانند یک گودال آب یا فلز براق نگاه میکنید، بازتاب محیط اطراف به صورت درست و دقیق روی آن نمایش داده میشود اما زمانی که کمی دوربین را به اطراف تکان میدهید، به سرعت قسمتهایی از تصویر بازتاب داده شده محو میشود و از بین میرود. این پدیده به این خاطر رخ میدهد که Screen Space Reflections تنها به دادهها و اطلاعات داخل دید و دوربین شما حساس است و در غیر این صورت، کاری از پیش نمیبرد.
Screen Space Reflections اصلاً بینقص نیست!
با این که SSR یک تکنیک و فناوری کار راه انداز، راحت و نسبتاً کم تقاضا برای نمایش بازتابها در یک بازی ویدیویی به حساب میآید اما نمیتوان نقاط ضعف بزرگ آن را نادیده گرفت. یکی از بزرگترین نقاط ضعف تکنیک Screen Space Reflection همان نکتهای است که پیشتر به آن اشاره شد. SSR تنها زمانی به ما تصویر بازتاب شده ارائه میدهد که همه چیز داخل دید و دوربین گیمر قرار گرفته باشد.
این بدان معنی است که نمیتوان با نگاه کردن از یک گوشه، از یک آینه انتظار بازتاب داشت یا نمیتوان با نگاه کردن به زمین، بازتاب آسمان و ابرها را روی سطوح مشاهده کرد. این تنها نقطه ضعف بزرگ تکنیک Screen Space Reflections نیست. SSR میتواند در بسیاری از مواقع اشکال مصنوعی و نویز مانندی روی تصویر ایجاد کند. این مشکل در نمایش بازتابها با روش SSR میتواند دلایل مختلفی داشته باشد. پیاده سازی ضعیف SSR روی موتور گرافیکی یا عدم سازگاری آن با موتور میتواند یکی از این دلایل شناخته شود. حتی کاهش رزولوشن SSR توسط سازندگان به دلیل تقاضای بالا در شرایط مختلف یا اضافه کردن موشن بلور به صورت اغراق آمیز نیز میتواند عامل به وجود آمدن این نویزها یا Artefactها در نظر گرفته شود.
محدودیتها و نقصهای SSR به همین جا ختم نمیشود و فراتر میرود! یکی دیگر از مشکلات مربوط به این تکنیک و روش این است که افکتها یا اشیا Transparent (شفاف) به هیچ عنوان با این روش قابل نمایش و بازتاب نیستند. به عنوان مثال، شعلههای آتش یا مِه موجود در محیط با SSR بازتاب داده نمیشوند.
SSR؛ اینبار فنیتر!
حالا که دید و درک خوبی نسبت به فناوری یا تکنیک Screen Space Reflections به دست آوردیم، بیایید کمی دقیقتر درباره آن صحبت کنیم. تاکنون گفتیم که SSR میتواند محیطهای موجود در قاب و دوربین گیمر را به شکل راضی کنندهای بازتاب دهد اما این اتفاق از منظر فنی چگونه رخ میدهد؟
SSR از نگاه فنی این چنین کار میکند که یک یا چند پرتو نور وارد دنیای بازی میشود و در طول مسیر خود به نقاطی از بافتهای مجاور نگاه میکند. برای انجام درست این عملیات، سازندگان و توسعه دهندگان بازیهای ویدیویی نه تنها به تصویر اصلی، بلکه به Depth Buffer (نوعی از بافر داده که باعث میشود شکل هندسی اشیای سهبعدی و اطلاعات عمق آنها در گرافیک و محیط سهبعدی از یک زاویه دید خاص، ارائه شود) نیز نیاز دارند.
با چک کردن Depth Buffer، سازندگان اطمینان پیدا میکنند که نقطه انتخاب شده توسط پرتو نور در جلو یا عقب صحنه قرار دارد. اگر آن نقطه از نور جلوی صحنه باشد و نقطه بعدی دقیقاً در پشت سر آن قرار بگیرد، این فاصله همان موقعیتی محسوب میشود که نور از روی صحنه عبور کرده است. بنابراین سازندگان میدانند که باید در آن موقعیت از رنگ آمیزی استفاده کنند و در نتیجه بازتاب شکل میگیرد. توضیح نوع عملکرد SSR در قالب کلمات کمی سخت است؛ به همین دلیل تصویر مقابل را برای درک بهتر برایتان قرار دادهایم.
SSR؛ یکی از همان تکنیکهای در حال انقراض!
فناوری یا تکنیک Screen Space Reflections امروزه به یک روش پیش پا افتاده و مرسوم برای به تصویر کشیدن بازتابها در بازیهای ویدیویی مختلف به شمار میرود. پیاده سازی و کار با این تکنیک بسیار راحت و تقاضای سخت افزاری آن نیز نسبتاً پایین است. به همین دلیل، سازندگان و توسعه دهندگان بسیاری برای نمایش بازتابها داخل بازیشان از SSR استفاده میکنند. درست است که SSR بینقص نیست و ممکن است مشکلات بسیاری را از نظر بصری و حتی فنی برای گیمرها و بازیسازان به وجود بیاورد اما نمیتوان فواید و نقاط قوت آن را نیز فراموش کنیم.
با تمام این تفاسیر، باید این واقعیت را قبول کنیم که Screen Space Reflection در کنار بسیاری از روشهای شبیه سازی دیگر مانند Ambient Occlusion در حال انقراضاند و آینده روشنی در افق آنها قرار ندارد! اگر برایتان سوال پیش آمده که چرا چنین اتفاقی در حال رخ دادن است، باید توضیح دهیم که با ورود فناوری Ray Tracing به دنیای گرافیک بازیهای ویدیویی، دیگر نیازی به استفاده از روشهای متعدد برای شبیه سازی کردن بازتابها، سایهها یا حتی پرتوهای نور نیست و بهرهگیری از Ray Tracing با سخت افزارهای قدرتمند و مدرن امروزی، تمام این کارها را به بهترین و واقع گرایانهترین شکل ممکن انجام میدهد.
استفاده از SSR هنوز خوب است!
البته با وجود تقاضای سخت افزاری بالای Ray Tracing، طبیعی است اگر بسیاری از سازندگان و توسعه دهندگان مستقل و کوچکتر به سراغ تکنیکها و روشهای کم تقاضاتر و کم دردسرتری مانند Plainer Reflections ،Screen Space Reflections و حتی Cube Map بروند.
نظر شما در مورد این قسمت از تک پدیا و توضیحات ارائه شده درباره فناوری و تکنیک Screen Space Reflections چیست؟ نظرات و تجربیات خود درباره این مفهوم و تکنیک گرافیکی را با ما به اشتراک بگذارید.
با تشکر از سازندگان بازی Blightbound و رسانه Gamasutra